package com.gitee.mars.marsquickframe.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.gitee.mars.marsquickframe.entity.SysMenu;
import com.gitee.mars.marsquickframe.request.SysMenuReq;
import com.gitee.mars.marsquickframe.response.base.BasePageRequest;
import com.gitee.mars.marsquickframe.response.vo.SysMenuListVo;
import com.gitee.mars.marsquickframe.response.vo.SysUserMenuVo;

import java.util.List;

/**
 * 接口
 *
 * @Author wq
 * @Date 2020-12-15
 **/
public interface SysMenuService extends IService<SysMenu> {

    /**
     * 菜单分页
     *
     * @param query query
     * @return IPage<SysMenu>
     */
    IPage<SysMenu> page(BasePageRequest query);


    /**
     * 查询角色的权限
     *
     * @param roleId 角色ID
     * @return List<String>
     */
    List<String> findPermission(Integer roleId);

    /**
     * 新增菜单
     *
     * @param req req
     */
    void add(SysMenuReq req);

    /**
     * 删除菜单
     *
     * @param id id
     */
    void delete(Integer id);

    /**
     * 更新菜单
     *
     * @param req req
     */
    void updateMenu(SysMenuReq req);

    /**
     * 查询列表
     *
     * @param id       id
     * @param menuName menuName
     * @return 列表
     */
    List<SysMenuListVo> getList(Integer id, String menuName);

    /**
     * 查询角色下面的菜单
     *
     * @param roleId 角色ID
     * @return List<SysUserMenuVo>
     */
    List<SysUserMenuVo> findMenuRole(Integer roleId);

    /**
     * 是否有子菜单
     *
     * @param id id
     * @return boolean
     */
    boolean isExistChildren(Integer id);
}
